package org.example.recetario;

import android.annotation.SuppressLint;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class Recetas {

	public static final String TAG = "Receta";
	private static RecetasBD recetasBD;

	public static Receta elemento(int id) {
		Receta receta = null;
		SQLiteDatabase bd = recetasBD.getReadableDatabase();
		Cursor cursor = bd.rawQuery("SELECT * FROM recetas WHERE _id = " + id,
				null);
		if (cursor.moveToNext()) {
			receta = new Receta();
			receta.setNombre(cursor.getString(1));
			receta.setIngredientes(cursor.getString(2));
			receta.setTiempoHoras(cursor.getString(3));
			receta.setTiempoMinutos(cursor.getString(4));
			receta.setTipo1(TipoReceta.values()[cursor.getInt(5)]);
			receta.setTipo2(DificultadReceta.values()[cursor.getInt(6)]);
			receta.setFoto(cursor.getString(7));
			receta.setPreparacion(cursor.getString(8));
			receta.setFecha(cursor.getLong(9));
			receta.setValoracion(cursor.getFloat(10));
		}
		cursor.close();
		bd.close();
		return receta;
	}

	public static int nuevo() {
	    int id = -1;
	    Receta receta = new Receta();
	    SQLiteDatabase bd = recetasBD.getWritableDatabase();
	    bd.execSQL("INSERT INTO recetas (categoria, fecha,tiempohoras,tiempominutos) VALUES ("+
	    receta.getTipo1().ordinal()+", "+receta.getFecha()+ ",0,0 "+")");
	    Cursor b = bd.rawQuery("SELECT _id FROM recetas WHERE fecha = " +
                receta.getFecha(), null);
	    if (b.moveToNext()){
	        id = b.getInt(0);
	    }
	    else
	    	id = 1;
	    b.close();
	    bd.close();
	    return id;
	}

	public static void borrar(int id) {
		SQLiteDatabase bd = recetasBD.getWritableDatabase();
		bd.execSQL("DELETE FROM recetas WHERE _id = " + id);
		bd.close();
	}

	public static void indicializaBD(Context contexto) {
		recetasBD = new RecetasBD(contexto);
	}

	@SuppressLint("DefaultLocale")
	public static Cursor listado(String palabra) {
		SQLiteDatabase bd = recetasBD.getReadableDatabase();
		if (palabra.equals("listadonormal"))
			return bd.rawQuery("SELECT * FROM recetas ORDER BY nombre", null);
		else
			return bd.rawQuery("SELECT * FROM recetas WHERE UPPER(nombre) LIKE '%" + palabra.toUpperCase() + "%' ORDER BY nombre", null);
	}

	public static void actualizaReceta(int id, Receta receta) {
		SQLiteDatabase bd = recetasBD.getWritableDatabase();
		bd.execSQL("UPDATE recetas SET nombre = '" + receta.getNombre()
				+ "', ingredientes = '" + receta.getIngredientes() + "', tiempohoras = "
				+ receta.getTiempoHoras() + " , tiempominutos = "
				+ receta.getTiempoMinutos() + " , categoria = "
				+ receta.getTipo1().ordinal() + " , dificultad = "
				+ receta.getTipo2().ordinal() +" , foto = '" + receta.getFoto()
				+ "', preparacion = '" + receta.getPreparacion()
				+ "', fecha = " + receta.getFecha()
				+ " , valoracion = " + receta.getValoracion() + " WHERE _id = " + id);
		bd.close();
	}
	
	public static int primerId() {
		   int id = -1;
		   SQLiteDatabase bd = recetasBD.getReadableDatabase();
		   Cursor c = bd.rawQuery("SELECT _id FROM recetas LIMIT 1", null);
		   if (c.moveToNext()){
		      id = c.getInt(0);
		   }
		   c.close();
		   bd.close();
		   return id;
		}

}
